ã€ãã¬ãŒã¿ãã«ããŒã§JavaScriptã®ãã€ãã©ã€ã³å¹çãæå€§åãES2023ã®mapãfilterãreduceãé å»¶è©äŸ¡ãã¡ã¢ãªäœ¿çšéåæžãããŒã¿ã¹ããªãŒã åŠçã®åŒ·åãããã«å®çŸãããã解説ããŸãã
JavaScriptã€ãã¬ãŒã¿ãã«ããŒã»ã¹ããªãŒã ãªããã£ãã€ã¶ïŒçŸä»£éçºã«ããããã€ãã©ã€ã³å¹çã®åäž
æ¥éã«é²åããã°ããŒãã«ãªãœãããŠã§ã¢éçºã®äžçã«ãããŠãããŒã¿ã¹ããªãŒã ã®å¹ççãªåŠçã¯æãéèŠã§ããéèæ©é¢ã®ãªã¢ã«ã¿ã€ã åæããã·ã¥ããŒããããeã³ããŒã¹ãã©ãããã©ãŒã ã«ãããå€§èŠæš¡ãªããŒã¿å€æããããŠIoTããã€ã¹ã§ã®è»œéãªåŠçã«è³ããŸã§ãäžçäžã®éçºè ã¯ããŒã¿ãã€ãã©ã€ã³ãæé©åããæ¹æ³ãåžžã«æš¡çŽ¢ããŠããŸãããŠããã¿ã¹ãªèšèªã§ããJavaScriptã¯ããããã®èŠæ±ã«å¿ããããã«ç¶ç¶çã«åŒ·åãããŠããŸãããECMAScript 2023 (ES2023)ã«ãããã€ãã¬ãŒã¿ãã«ããŒã®å°å ¥ã¯å€§ããªé£èºã§ãããã€ãã©ãã«ãªããŒã¿ãæäœããããã®åŒ·åã§å®£èšçããã€å¹ççãªããŒã«ãæäŸããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ããããã®ã€ãã¬ãŒã¿ãã«ããŒãã©ã®ããã«ã¹ããªãŒã ãªããã£ãã€ã¶ãšããŠæ©èœãããã€ãã©ã€ã³ã®å¹çãé«ããã¡ã¢ãªãããããªã³ããåæžããæçµçã«éçºè ãäžçäžã§ãã髿§èœã§ä¿å®æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ããããæ¢ããŸãã
JavaScriptã«ãããå¹ççãªããŒã¿ãã€ãã©ã€ã³ãžã®ã°ããŒãã«ãªéèŠ
çŸä»£ã®ã¢ããªã±ãŒã·ã§ã³ã¯ããã®èŠæš¡ããã¡ã€ã³ã«é¢ããããæ¬è³ªçã«ããŒã¿é§ååã§ãããªã¢ãŒãAPIããã®ãŠãŒã¶ãŒãããã¡ã€ã«ã®ååŸãã»ã³ãµãŒããŒã¿ã®åŠçã衚瀺çšã®è€éãªJSONæ§é ã®å€æãªã©ãããŒã¿ã®æµãã¯ç¶ç¶çã§ããããã°ãã°å€§èŠæš¡ã«ãªããŸããåŸæ¥ã®JavaScriptã®é åã¡ãœããã¯éåžžã«äŸ¿å©ã§ãããç¹ã«å€§èŠæš¡ãªããŒã¿ã»ãããæ±ãå Žåãè€æ°ã®æäœãé£çµããå Žåã«ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãã¡ã¢ãªæ¶è²»ã®å¢å ã«ã€ãªããããšããããŸãã
ããã©ãŒãã³ã¹ãšå¿çæ§ã®å¿ èŠæ§ã®é«ãŸã
äžçäžã®ãŠãŒã¶ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ãé«éã§å¿çæ§ãé«ããå¹ççã§ããããšãæåŸ ããŠããŸããåäœã®é ãUIãããŒã¿ã®è¡šç€ºé å»¶ããŸãã¯éå°ãªãªãœãŒã¹æ¶è²»ã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãèããäœäžããããšã³ã²ãŒãžã¡ã³ããæ¡çšçã®äœäžã«ã€ãªãããŸããéçºè ã¯ã倧éœåžåã®é«éå ãã¡ã€ããŒãããã¯ãŒã¯ããé éå°ã®äœéæ¥ç¶ãŸã§ã倿§ãªããã€ã¹ããããã¯ãŒã¯æ¡ä»¶äžã§ã·ãŒã ã¬ã¹ã«åäœãããé«åºŠã«æé©åããããœãªã¥ãŒã·ã§ã³ãæäŸãããšããçµ¶ãéãªããã¬ãã·ã£ãŒã«ãããããŠããŸãã
åŸæ¥ã®å埩åŠçã¡ãœããã®èª²é¡
äžè¬çãªã·ããªãªãèããŠã¿ãŸãããããªããžã§ã¯ãã®å€§ããªé
åããã£ã«ã¿ãªã³ã°ããæ®ã£ããã®ã倿ããããããéèšããå¿
èŠããããŸãã.filter()ã.map()ã®ãããªåŸæ¥ã®é
åã¡ãœããã䜿çšãããšãåæäœããšã«äžéé
åãäœæãããããšããããããŸãããã®ã¢ãããŒãã¯ãå°èŠæš¡ãªããŒã¿ã»ããã«å¯ŸããŠã¯èªã¿ãããæ
£çšçã§ããã倧éã®ããŒã¿ã¹ããªãŒã ã«é©çšããããšããã©ãŒãã³ã¹ãšã¡ã¢ãªã®æ¶èæºãšãªãåŸãŸããåäžéé
åã¯ã¡ã¢ãªãæ¶è²»ããæçµçµæã®äžéšããå¿
èŠãªãå Žåã§ããåã¹ãããã§ããŒã¿ã»ããå
šäœãåŠçããå¿
èŠããããŸãããã®ãå
è¡è©äŸ¡ãã¯ãã¡ã¢ãªã«å¶çŽã®ããç°å¢ãç¡éã®ããŒã¿ã¹ããªãŒã ãåŠçããéã«ç¹ã«åé¡ãšãªãå¯èœæ§ããããŸãã
JavaScriptã®ã€ãã¬ãŒã¿ãšã€ãã©ãã«ã®çè§£
ã€ãã¬ãŒã¿ãã«ããŒã«é£ã³èŸŒãåã«ãJavaScriptã«ãããã€ãã¬ãŒã¿ãšã€ãã©ãã«ã®åºæ¬æŠå¿µãææ¡ããããšãéèŠã§ãããããã¯ãããŒã¿ã¹ããªãŒã ãå¹ççã«åŠçãããæ¹æ³ã®åºç€ãšãªããŸãã
ã€ãã©ãã«ãšã¯ïŒ
ã€ãã©ãã«ãšã¯ãå埩åŠçã®æ¹æ³ãå®çŸ©ãããªããžã§ã¯ãã§ããJavaScriptã§ã¯ãArrayãStringãMapãSetãNodeListãªã©ãå€ãã®çµã¿èŸŒã¿åãã€ãã©ãã«ã§ãããªããžã§ã¯ããå埩ãããã³ã«ãå®è£
ããŠããå Žåãã€ãŸãã€ãã¬ãŒã¿ãè¿ã[Symbol.iterator]ãä»ããŠã¢ã¯ã»ã¹å¯èœãªã¡ãœãããæã£ãŠããå Žåã«ããã®ãªããžã§ã¯ãã¯ã€ãã©ãã«ã§ãã
ã€ãã©ãã«ã®äŸ:
const myArray = [1, 2, 3]; // é
åã¯ã€ãã©ãã«ã§ã
ã€ãã¬ãŒã¿ãšã¯ïŒ
ã€ãã¬ãŒã¿ãšã¯ãã³ã¬ã¯ã·ã§ã³ããäžåºŠã«1ã€ãã€é
ç®ã«ã¢ã¯ã»ã¹ãããã®ã·ãŒã±ã³ã¹å
ã§ã®çŸåšã®äœçœ®ã远跡ããæ¹æ³ãç¥ã£ãŠãããªããžã§ã¯ãã§ããããã¯.next()ã¡ãœãããå®è£
ããå¿
èŠãããããã®ã¡ãœããã¯2ã€ã®ããããã£ãæã€ãªããžã§ã¯ããè¿ããŸã: valueïŒã·ãŒã±ã³ã¹å
ã®æ¬¡ã®é
ç®ïŒãšdoneïŒå埩ãå®äºãããã©ããã瀺ãããŒã«å€ïŒã
ã€ãã¬ãŒã¿ã®åºåäŸ:
{ value: 1, done: false }
{ value: undefined, done: true }
for...ofã«ãŒãïŒã€ãã©ãã«ã®æ¶è²»è
for...ofã«ãŒãã¯ãJavaScriptã§ã€ãã©ãã«ãæ¶è²»ããæãäžè¬çãªæ¹æ³ã§ããã€ãã©ãã«ã®[Symbol.iterator]ã¡ãœãããšçŽæ¥å¯Ÿè©±ããã€ãã¬ãŒã¿ãååŸããdoneãtrueã«ãªããŸã§.next()ãç¹°ãè¿ãåŒã³åºããŸãã
for...ofã䜿çšããäŸ:
const numbers = [10, 20, 30];
for (const num of numbers) {
console.log(num);
}
// åºå: 10, 20, 30
ã€ãã¬ãŒã¿ãã«ããŒïŒES2023ïŒã®ç޹ä»
çŸåšES2023ã®äžéšãšãªã£ãŠããã€ãã¬ãŒã¿ãã«ããŒã®ææ¡ã¯ãIterator.prototypeã«çŽæ¥ãŠãŒãã£ãªãã£ã¡ãœããã®ã»ãããæäŸããããšã§ãã€ãã¬ãŒã¿ã®èœåã倧å¹
ã«æ¡åŒµããŸããããã«ãããéçºè
ã¯mapãfilterãreduceãªã©ã®äžè¬çãªé¢æ°åããã°ã©ãã³ã°ãã¿ãŒã³ããé
åã«å€æããããšãªããä»»æã®ã€ãã©ãã«ã«çŽæ¥é©çšã§ããŸããããããã®ãã¹ããªãŒã ãªããã£ãã€ã¶ãèœåã®äžæ žã§ãã
ã€ãã¬ãŒã¿ãã«ããŒãšã¯ïŒ
åºæ¬çã«ãã€ãã¬ãŒã¿ãã«ããŒã¯ãå埩ãããã³ã«ã«æºæ ããä»»æã®ãªããžã§ã¯ãã§åŒã³åºãããšãã§ããæ°ããã¡ãœããã®ã»ãããæäŸããŸãããããã®ã¡ãœããã¯é å»¶çã«åäœããŸããã€ãŸããã³ã¬ã¯ã·ã§ã³å šäœãäºåã«åŠçããŠäžéã³ã¬ã¯ã·ã§ã³ãäœæããã®ã§ã¯ãªããèŠæ±ã«å¿ããŠèŠçŽ ã1ã€ãã€åŠçããŸãããã®ããŒã¿ã®ããã«ãã¢ãã«ã¯ãããã©ãŒãã³ã¹ãéèŠãªã·ããªãªã§éåžžã«å¹ççã§ãã
ããã解決ããåé¡ïŒå è¡è©äŸ¡ vs. é å»¶è©äŸ¡
åŸæ¥ã®é
åã¡ãœããã¯å
è¡è©äŸ¡ãå®è¡ããŸããé
åã«å¯ŸããŠ.map()ãåŒã³åºããšã倿ãããèŠçŽ ãå«ãå
šãæ°ããé
åãå³åº§ã«äœæãããŸãããã®çµæã«å¯ŸããŠ.filter()ãåŒã³åºããšãããã«å¥ã®æ°ããé
åãäœæãããŸããããã¯ããããã®äžæçãªé
åãäœæããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããªãŒããŒãããã®ãããå€§èŠæš¡ãªããŒã¿ã»ããã«ã¯éå¹ççã«ãªãå¯èœæ§ããããŸãã察ç
§çã«ãã€ãã¬ãŒã¿ãã«ããŒã¯é
å»¶è©äŸ¡ãæ¡çšããŸããèŠæ±ããããšãã«ã®ã¿å€ãèšç®ããŠçæãããããäžèŠãªäžéããŒã¿æ§é ã®äœæãåé¿ããŸãã
ã€ãã¬ãŒã¿ãã«ããŒã«ãã£ãŠå°å ¥ãããäž»èŠãªã¡ãœãã
ã€ãã¬ãŒã¿ãã«ããŒã®ä»æ§ã§ã¯ãããã€ãã®åŒ·åãªã¡ãœãããå°å ¥ãããŠããŸãïŒ
.map(mapperFunction): æäŸããã颿°ã䜿çšããŠåèŠçŽ ã倿ãã倿ãããèŠçŽ ã®æ°ããã€ãã¬ãŒã¿ãçæããŸãã.filter(predicateFunction): äžããããæ¡ä»¶ãæºããèŠçŽ ãéžæãããã£ã«ã¿ãªã³ã°ãããèŠçŽ ã®æ°ããã€ãã¬ãŒã¿ãçæããŸãã.take(count): ã€ãã¬ãŒã¿ã®å é ããæå€§countåã®èŠçŽ ãçæããŸãã.drop(count): æåã®countåã®èŠçŽ ãã¹ãããããæ®ããçæããŸãã.flatMap(mapperFunction): åèŠçŽ ãã€ãã©ãã«ã«ãããã³ã°ãããã®çµæãåäžã®ã€ãã¬ãŒã¿ã«ãã©ããåããŸãã.reduce(reducerFunction, initialValue): ã¢ãã¥ã ã¬ãŒã¿ãšåèŠçŽ ã«å¯ŸããŠé¢æ°ãé©çšããã€ãã¬ãŒã¿ãåäžã®å€ã«çž®å°ããŸãã.toArray(): ã€ãã¬ãŒã¿å šäœãæ¶è²»ããçæããããã¹ãŠã®èŠçŽ ãå«ãé åãè¿ããŸããããã¯å è¡è©äŸ¡ã®çµç«¯æäœã§ãã.forEach(callback): æäŸãããã³ãŒã«ããã¯é¢æ°ãåèŠçŽ ã«å¯ŸããŠäžåºŠå®è¡ããŸãããããçµç«¯æäœã§ãã
ã€ãã¬ãŒã¿ãã«ããŒã«ããå¹ççãªããŒã¿ãã€ãã©ã€ã³ã®æ§ç¯
ãããã®ã¡ãœãããé£çµããŠãéåžžã«å¹ççãªããŒã¿åŠçãã€ãã©ã€ã³ãæ§ç¯ããæ¹æ³ãæ¢ã£ãŠã¿ãŸããããåœéçãªçµç¹ã«ãšã£ãŠå ±éã®èª²é¡ã§ãããIoTããã€ã¹ã®ã°ããŒãã«ãããã¯ãŒã¯ããã®ã»ã³ãµãŒããŒã¿åŠçãšããæ¶ç©ºã®ã·ããªãªã䜿çšããŸãã
.map()ã«ãã倿ïŒããŒã¿åœ¢åŒã®æšæºå
äžçäžã®æ§ã ãªIoTããã€ã¹ããã»ã³ãµãŒã®èªã¿åãå€ãåãåãããšãæ³åããŠãã ãããæž©åºŠã¯ææ°ãŸãã¯è¯æ°ã§å ±åãããå¯èœæ§ããããŸããåŠçã®ããã«ãã¹ãŠã®æž©åºŠãææ°ã«æšæºåããã¿ã€ã ã¹ã¿ã³ãã远å ããå¿ èŠããããŸãã
åŸæ¥ã®ã¢ãããŒãïŒå è¡è©äŸ¡ïŒ:
const sensorReadings = [
{ id: 'sensor-001', value: 72, unit: 'Fahrenheit' },
{ id: 'sensor-002', value: 25, unit: 'Celsius' },
{ id: 'sensor-003', value: 68, unit: 'Fahrenheit' },
// ... æ°åã®èªã¿åãããŒã¿ã«ãªãå¯èœæ§ããããŸã
];
const celsiusReadings = sensorReadings.map(reading => {
let tempInCelsius = reading.value;
if (reading.unit === 'Fahrenheit') {
tempInCelsius = (reading.value - 32) * 5 / 9;
}
return {
id: reading.id,
temperature: parseFloat(tempInCelsius.toFixed(2)),
unit: 'Celsius',
timestamp: new Date().toISOString()
};
});
// celsiusReadingsã¯æ°ããé
åã§ãããå€§èŠæš¡ã«ãªãå¯èœæ§ããããŸãã
ã€ãã¬ãŒã¿ãã«ããŒã®.map()ã䜿çšïŒé
å»¶è©äŸ¡ïŒ:
// 'getSensorReadings()'ãéåæã€ãã©ãã«ãŸãã¯æšæºã®èªã¿åãå€ã®ã€ãã©ãã«ãè¿ããšä»®å®ããŸã
function* getSensorReadings() {
yield { id: 'sensor-001', value: 72, unit: 'Fahrenheit' };
yield { id: 'sensor-002', value: 25, unit: 'Celsius' };
yield { id: 'sensor-003', value: 68, unit: 'Fahrenheit' };
// å®éã®ã·ããªãªã§ã¯ãããŒã¿ããŒã¹ã«ãŒãœã«ãã¹ããªãŒã ãªã©ããããŒã¿ãé
å»¶çã«ååŸããŸã
}
const processedReadingsIterator = getSensorReadings()
.map(reading => {
let tempInCelsius = reading.value;
if (reading.unit === 'Fahrenheit') {
tempInCelsius = (reading.value - 32) * 5 / 9;
}
return {
id: reading.id,
temperature: parseFloat(tempInCelsius.toFixed(2)),
unit: 'Celsius',
timestamp: new Date().toISOString()
};
});
// processedReadingsIteratorã¯ã€ãã¬ãŒã¿ã§ããããŸã å®å
šãªé
åã§ã¯ãããŸããã
// å€ã¯ãfor...ofã.next()ãªã©ãä»ããŠèŠæ±ããããšãã«ã®ã¿èšç®ãããŸã
for (const reading of processedReadingsIterator) {
console.log(reading);
}
.filter()ã«ããéžæïŒé倧ãªãããå€ã®ç¹å®
次ã«ãã¡ã³ããã³ã¹ããŒã ãäžçäžã®ç°å¢ç£èŠã·ã¹ãã ã«èŠåããããã«ã枩床ãç¹å®ã®é倧ãªãããå€ïŒäŸïŒ30°CïŒãè¶ ããèªã¿åãå€ã«ã®ã¿é¢å¿ããããšããŸãã
ã€ãã¬ãŒã¿ãã«ããŒã®.filter()ã䜿çš:
const highTempAlerts = processedReadingsIterator
.filter(reading => reading.temperature > 30);
// highTempAlertsã¯å¥ã®ã€ãã¬ãŒã¿ã§ãããŸã äžéé
åã¯äœæãããŠããŸããã
// èŠçŽ ã¯ãã§ãŒã³ãééããéã«é
å»¶çã«ãã£ã«ã¿ãªã³ã°ãããŸãã
è€éãªãã€ãã©ã€ã³ã®ããã®æäœã®é£çµïŒå®å šãªããŒã¿ã¹ããªãŒã 倿
.map()ãš.filter()ãçµã¿åãããããšã§ãçµç«¯æäœãåŒã³åºããããŸã§äžéé
åãäžåçæããã«ã匷åã§å¹ççãªããŒã¿ãã€ãã©ã€ã³ãæ§ç¯ã§ããŸãã
å®å šãªãã€ãã©ã€ã³ã®äŸ:
const criticalHighTempAlerts = getSensorReadings()
.map(reading => {
let tempInCelsius = reading.value;
if (reading.unit === 'Fahrenheit') {
tempInCelsius = (reading.value - 32) * 5 / 9;
}
return {
id: reading.id,
temperature: parseFloat(tempInCelsius.toFixed(2)),
unit: 'Celsius',
timestamp: new Date().toISOString()
};
})
.filter(reading => reading.temperature > 30);
// çµæãå埩åŠçããŠè¡šç€ºïŒçµç«¯æäœ - å€ã¯äžã€ãã€ãã«ãããŠåŠçãããïŒ
for (const alert of criticalHighTempAlerts) {
console.log('CRITICAL ALERT:', alert);
}
ãã®ãã§ãŒã³å
šäœã¯ãæ°ããé
åãäœæããã«åäœããŸããåèªã¿åãå€ã¯mapãšfilterã®ã¹ããããé æ¬¡ééãããã£ã«ã¿ãŒæ¡ä»¶ãæºãããå Žåã«ã®ã¿æ¶è²»ã®ããã«çæãããŸããããã«ãããå€§èŠæš¡ãªããŒã¿ã»ããã®ã¡ã¢ãªäœ¿çšéãåçã«åæžãããããã©ãŒãã³ã¹ãåäžããŸãã
.flatMap()ã«ãããã¹ããããããŒã¿æ§é ã®åŠçïŒè€éãªãã°ãšã³ããªã®å±é
ããŒã¿ããã©ããåããå¿ èŠã®ãããã¹ããããæ§é ã§æäŸãããããšããããŸããæ§ã ãªãã€ã¯ããµãŒãã¹ããã®ãã°ãšã³ããªãæ³åããŠã¿ãŠãã ãããåãã°ã«ã¯é åå ã«è€æ°ã®ã€ãã³ã詳现ãå«ãŸããŠããå¯èœæ§ããããŸããç§ãã¡ã¯åã ã®ã€ãã³ããããããåŠçããããšèããŠããŸãã
.flatMap()ã䜿çšããäŸ:
const serviceLogs = [
{ service: 'AuthService', events: [{ type: 'LOGIN', user: 'alice' }, { type: 'LOGOUT', user: 'alice' }] },
{ service: 'PaymentService', events: [{ type: 'TRANSACTION', amount: 100 }, { type: 'REFUND', amount: 20 }] },
{ service: 'AuthService', events: [{ type: 'LOGIN', user: 'bob' }] }
];
function* getServiceLogs() {
yield { service: 'AuthService', events: [{ type: 'LOGIN', user: 'alice' }, { type: 'LOGOUT', user: 'alice' }] };
yield { service: 'PaymentService', events: [{ type: 'TRANSACTION', amount: 100 }, { type: 'REFUND', amount: 20 }] };
yield { service: 'AuthService', events: [{ type: 'LOGIN', user: 'bob' }] };
}
const allEventsIterator = getServiceLogs()
.flatMap(logEntry => logEntry.events.map(event => ({ ...event, service: logEntry.service })));
for (const event of allEventsIterator) {
console.log(event);
}
/* æåŸ
ãããåºå:
{ type: 'LOGIN', user: 'alice', service: 'AuthService' }
{ type: 'LOGOUT', user: 'alice', service: 'AuthService' }
{ type: 'TRANSACTION', amount: 100, service: 'PaymentService' }
{ type: 'REFUND', amount: 20, service: 'PaymentService' }
{ type: 'LOGIN', user: 'bob', service: 'AuthService' }
*/
.flatMap()ã¯ãåãã°ãšã³ããªå
ã®eventsé
åã®ãã©ããåããšã¬ã¬ã³ãã«åŠçããé
å»¶è©äŸ¡ãç¶æããªããåã
ã®ã€ãã³ãã®åäžã¹ããªãŒã ãäœæããŸãã
.take()ãš.drop()ã«ããéšåçãªæ¶è²»ïŒç·æ¥ã¿ã¹ã¯ã®åªå
é äœä»ã
æã«ã¯ãããŒã¿ã®ãµãã»ããã ããå¿
èŠãªå ŽåããããŸããäŸãã°ãæåã®æ°èŠçŽ ããæåã®æ°èŠçŽ ãé€ãããã¹ãŠã§ãã.take()ãš.drop()ã¯ããããã®ã·ããªãªãç¹ã«æœåšçã«ç¡éã®ã¹ããªãŒã ãæ±ãå Žåãããã¹ãŠãååŸããã«ããŒãžåå²ãããããŒã¿ã衚瀺ããå Žåã«éåžžã«è²Žéã§ãã
äŸïŒæœåšçãªãã¹ãããŒã¿ãããããããåŸãæåã®2ã€ã®é倧ãªã¢ã©ãŒããååŸãã:
const firstTwoCriticalAlerts = getSensorReadings()
.drop(10) // æåã®10åã®èªã¿åãå€ãããããïŒäŸïŒãã¹ããŸãã¯æ ¡æ£ããŒã¿ïŒ
.map(reading => { /* ... 以åãšåã倿 ... */
let tempInCelsius = reading.value;
if (reading.unit === 'Fahrenheit') {
tempInCelsius = (reading.value - 32) * 5 / 9;
}
return {
id: reading.id,
temperature: parseFloat(tempInCelsius.toFixed(2)),
unit: 'Celsius',
timestamp: new Date().toISOString()
};
})
.filter(reading => reading.temperature > 30) // éå€§ãªæž©åºŠã§ãã£ã«ã¿ãªã³ã°
.take(2); // æåã®2ã€ã®é倧ãªã¢ã©ãŒãã®ã¿ãååŸ
// 2ã€ã®é倧ãªã¢ã©ãŒãã®ã¿ãåŠçãããçæãããããã倧å¹
ãªãªãœãŒã¹ãç¯çŽã§ããŸãã
for (const alert of firstTwoCriticalAlerts) {
console.log('URGENT ALERT:', alert);
}
.reduce()ã«ããéèšïŒã°ããŒãã«ãªå£²äžããŒã¿ã®èŠçŽ
.reduce()ã¡ãœããã䜿çšãããšãã€ãã¬ãŒã¿ããã®å€ãåäžã®çµæã«éçŽã§ããŸããããã¯ãã¹ããªãŒã ããŒã¿ããåèšãå¹³åãèšç®ããããèŠçŽãªããžã§ã¯ããæ§ç¯ãããããã®ã«éåžžã«äŸ¿å©ã§ãã
äŸïŒãã©ã³ã¶ã¯ã·ã§ã³ã®ã¹ããªãŒã ããç¹å®å°åã®ç·å£²äžãèšç®ãã:
function* getTransactions() {
yield { id: 'T001', region: 'APAC', amount: 150 };
yield { id: 'T002', region: 'EMEA', amount: 200 };
yield { id: 'T003', region: 'AMER', amount: 300 };
yield { id: 'T004', region: 'APAC', amount: 50 };
yield { id: 'T005', region: 'EMEA', amount: 120 };
}
const totalAPACSales = getTransactions()
.filter(transaction => transaction.region === 'APAC')
.reduce((sum, transaction) => sum + transaction.amount, 0);
console.log('Total APAC Sales:', totalAPACSales); // åºå: Total APAC Sales: 200
ããã§ã¯ã.filter()ã¹ãããã«ãã£ãŠAPACã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ã¿ãèæ
®ããã.reduce()ããã®éé¡ãå¹ççã«åèšããŸããããã»ã¹å
šäœã¯ã.reduce()ãæçµå€ãçæããå¿
èŠããããŸã§é
å»¶çã«è¡ãããå¿
èŠãªãã©ã³ã¶ã¯ã·ã§ã³ã®ã¿ããã€ãã©ã€ã³ãééããŸãã
ã¹ããªãŒã æé©åïŒã€ãã¬ãŒã¿ãã«ããŒããã€ãã©ã€ã³å¹çãåäžãããæ¹æ³
ã€ãã¬ãŒã¿ãã«ããŒã®çã®åã¯ããã®åºæã®èšèšååã«ãããããã¯ç¹ã«ã°ããŒãã«ã«åæ£ãããã¢ããªã±ãŒã·ã§ã³ã«ãããŠãéèŠãªããã©ãŒãã³ã¹ãšå¹çã®åäžã«çŽæ¥ã€ãªãããŸãã
é å»¶è©äŸ¡ãšããã«ãã¢ãã«
ãããã€ãã¬ãŒã¿ãã«ããŒã®å¹çæ§ã®åºç€ã§ãããã¹ãŠã®ããŒã¿ãäžåºŠã«åŠçããïŒå
è¡è©äŸ¡ïŒã®ã§ã¯ãªããã€ãã¬ãŒã¿ãã«ããŒã¯ãªã³ããã³ãã§ããŒã¿ãåŠçããŸãã.map().filter().take()ãé£éãããŠããæç€ºçã«å€ïŒäŸïŒfor...ofã«ãŒãã®äœ¿çšã.next()ã®åŒã³åºãïŒãèŠæ±ãããŸã§ãå®éã®ããŒã¿åŠçã¯è¡ãããŸããããã®ããã«ãã¢ãã«ã¯ã次ã®ããšãæå³ããŸãïŒ
- å¿
èŠãªèšç®ã®ã¿ãå®è¡ãããïŒ 100äžã¢ã€ãã ã®ã¹ããªãŒã ãã
.take(5)èŠçŽ ããååŸããªãå ŽåãåŠçãããã®ã¯ãã®5ã€ã®èŠçŽ ïŒããã³ãã§ãŒã³å ã®ãã®å è¡èŠçŽ ïŒã ãã§ããæ®ãã®999,995èŠçŽ ã¯æ±ºããŠè§ŠããããŸããã - å¿çæ§ïŒ ã¢ããªã±ãŒã·ã§ã³ã¯éšåçãªçµæã®åŠçãšè¡šç€ºãã¯ããã«éãéå§ã§ãããŠãŒã¶ãŒã«ãšã£ãŠã®äœæããã©ãŒãã³ã¹ãåäžããŸãã
äžéé åã®äœæã®åæž
åè¿°ã®ããã«ãåŸæ¥ã®é åã¡ãœããã¯é£éãããæäœããšã«æ°ããé åãäœæããŸããå€§èŠæš¡ãªããŒã¿ã»ããã®å Žåãããã¯ä»¥äžã«ã€ãªããå¯èœæ§ããããŸãïŒ
- ã¡ã¢ãªãããããªã³ãã®å¢å ïŒ è€æ°ã®å€§ããªé åãåæã«ã¡ã¢ãªã«ä¿æããããšã¯ãç¹ã«ã¯ã©ã€ã¢ã³ããµã€ãã®ã¢ããªã±ãŒã·ã§ã³ïŒãã©ãŠã¶ãã¢ãã€ã«ããã€ã¹ïŒãã¡ã¢ãªã«å¶çŽã®ãããµãŒããŒç°å¢ã§ãå©çšå¯èœãªãªãœãŒã¹ãæ¯æžãããå¯èœæ§ããããŸãã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ãªãŒããŒãããïŒ JavaScriptãšã³ãžã³ã¯ãããã®äžæçãªé åãã¯ãªãŒã³ã¢ããããããã«ããå€ãã®äœæ¥ãå¿ èŠãšããæœåšçãªäžæåæ¢ãããã©ãŒãã³ã¹ã®äœäžã«ã€ãªãããŸãã
ã€ãã¬ãŒã¿ãã«ããŒã¯ãã€ãã¬ãŒã¿äžã§çŽæ¥æäœããããšã«ããããããåé¿ããŸããããŒã¿ãåã¹ãããã§å®å šãªé åã«å®äœåãããããšãªãæµããããªãŒã³ã§æ©èœçãªãã€ãã©ã€ã³ãç¶æããŸããããã¯ãå€§èŠæš¡ãªããŒã¿åŠçã«ãšã£ãŠç»æçãªããšã§ãã
èªã¿ããããšä¿å®æ§ã®åäž
ããã©ãŒãã³ã¹äžã®å©ç¹ã§ãããšåæã«ãã€ãã¬ãŒã¿ãã«ããŒã®å®£èšçãªæ§è³ªã¯ã³ãŒãã®å質ã倧å¹
ã«åäžãããŸãã.filter().map().reduce()ã®ãããªæäœã®é£éã¯ãããŒã¿å€æããã»ã¹ã®èª¬æã®ããã«èªããŸããããã«ãããç¹ã«å€æ§ãªããã¯ã°ã©ãŠã³ããæã€å
±åã®ã°ããŒãã«éçºããŒã ã«ãããŠãè€éãªãã€ãã©ã€ã³ãçè§£ããããããããã°ãããããä¿å®ãããããªããŸãã
éåæã€ãã¬ãŒã¿ïŒAsyncIterator.prototypeïŒãšã®äºææ§
éèŠãªããšã«ãã€ãã¬ãŒã¿ãã«ããŒã®ææ¡ã«ã¯AsyncIterator.prototypeãå«ãŸããŠãããéåæã€ãã©ãã«ã«ãåã匷åãªã¡ãœããããããããŸããããã¯ããããã¯ãŒã¯ã¹ããªãŒã ãããŒã¿ããŒã¹ããŸãã¯ãã¡ã€ã«ã·ã¹ãã ããã®ããŒã¿ãåŠçããå Žåã«äžå¯æ¬ ã§ãããããŒã¿ã¯æéãšãšãã«å°çããŸãããã®çµ±äžãããã¢ãããŒãã¯ã忣ã·ã¹ãã ã§äžè¬çãªèŠä»¶ã§ãããåæããŒã¿ãœãŒã¹ãšéåæããŒã¿ãœãŒã¹ã®äž¡æ¹ãæ±ãäœæ¥ãç°¡çŽ åããŸãã
AsyncIteratorã®äŸ:
async function* fetchPages(baseUrl) {
let nextPage = baseUrl;
while (nextPage) {
const response = await fetch(nextPage);
const data = await response.json();
yield data.items; // data.itemsãã¢ã€ãã ã®é
åã§ãããšä»®å®
nextPage = data.nextPageLink; // 次ã®ããŒãžãžã®ãªã³ã¯ãååŸãããããã°
}
}
async function processProductData() {
const productsIterator = fetchPages('https://api.example.com/products')
.flatMap(pageItems => pageItems) // ããŒãžãåã
ã®ã¢ã€ãã ã«ãã©ããå
.filter(product => product.price > 100)
.map(product => ({ id: product.id, name: product.name, taxRate: 0.15 }));
for await (const product of productsIterator) {
console.log('High-value product:', product);
}
}
processProductData();
ãã®éåæãã€ãã©ã€ã³ã¯ã補åãããŒãžããšã«åŠçãããã£ã«ã¿ãªã³ã°ãšãããã³ã°ãè¡ããŸããããã¹ãŠã®è£œåãåæã«ã¡ã¢ãªã«ããŒãããããšã¯ãããŸãããããã¯ãå€§èŠæš¡ãªã«ã¿ãã°ããªã¢ã«ã¿ã€ã ã®ããŒã¿ãã£ãŒãã«ãšã£ãŠéèŠãªæé©åã§ãã
æ¥çå šäœã§ã®å®çšçãªã¢ããªã±ãŒã·ã§ã³
ã€ãã¬ãŒã¿ãã«ããŒã®å©ç¹ã¯ãå°ççãªå Žæãã»ã¯ã¿ãŒã«é¢ä¿ãªããããããéçºè ã®ããŒã«ãããã«äŸ¡å€ãã远å ãšãªããæ°å€ãã®æ¥çããŠãŒã¹ã±ãŒã¹ã«åã³ãŸãã
WebéçºïŒã¬ã¹ãã³ã·ããªUIãšå¹ççãªAPIããŒã¿åŠç
ã¯ã©ã€ã¢ã³ããµã€ãã§ã¯ãã€ãã¬ãŒã¿ãã«ããŒã¯ä»¥äžãæé©åã§ããŸãïŒ
- UIã¬ã³ããªã³ã°ïŒ ä»®æ³åãªã¹ããç¡éã¹ã¯ããŒã«ã³ã³ããŒãã³ãã®ããŒã¿ãé å»¶ããŒãããã³åŠçããåæããŒãæéãšå¿çæ§ãåäžãããŸãã
- APIããŒã¿å€æïŒ RESTãŸãã¯GraphQL APIããã®å€§ããªJSONã¬ã¹ãã³ã¹ããç¹ã«è¡šç€ºã«å¿ èŠãªããŒã¿ãäžéšã§ããå Žåã«ãã¡ã¢ãªã倧éã«æ¶è²»ããããšãªãåŠçããŸãã
- ã€ãã³ãã¹ããªãŒã åŠçïŒ ãŠãŒã¶ãŒã®æäœã·ãŒã±ã³ã¹ããŠã§ããœã±ããã¡ãã»ãŒãžãå¹ççã«åŠçããŸãã
ããã¯ãšã³ããµãŒãã¹ïŒé«ã¹ã«ãŒãããã®ãªã¯ãšã¹ãåŠçãšãã°åæ
Node.jsããã¯ãšã³ããµãŒãã¹ã«ãšã£ãŠãã€ãã¬ãŒã¿ãã«ããŒã¯ä»¥äžã«åœ¹ç«ã¡ãŸãïŒ
- ããŒã¿ããŒã¹ã«ãŒãœã«åŠçïŒ å€§èŠæš¡ãªããŒã¿ããŒã¹çµæã»ãããæ±ãéã«ãã€ãã¬ãŒã¿ã¯çµæå šäœãã¡ã¢ãªã«ããŒãããããšãªããè¡ã1ã€ãã€åŠçã§ããŸãã
- ãã¡ã€ã«ã¹ããªãŒã åŠçïŒ éå°ãªRAMãæ¶è²»ããããšãªãã倧ããªãã°ãã¡ã€ã«ãCSVããŒã¿ãå¹ççã«èªã¿åãã倿ããŸãã
- APIã²ãŒããŠã§ã€ããŒã¿å€æïŒ åä¿¡ãŸãã¯éä¿¡ããŒã¿ã¹ããªãŒã ãããªãŒã³ã§ããã©ãŒãã³ã¹ã®é«ãæ¹æ³ã§å€æŽããŸãã
ããŒã¿ãµã€ãšã³ã¹ãšåæïŒãªã¢ã«ã¿ã€ã ããŒã¿ãã€ãã©ã€ã³
å°éçãªããã°ããŒã¿ããŒã«ã®ä»£æ¿ã«ã¯ãªããŸããããå°èŠæš¡ããäžèŠæš¡ã®ããŒã¿ã»ãããJavaScriptç°å¢å ã§ã®ãªã¢ã«ã¿ã€ã ã¹ããªãŒã åŠçã«ã¯ãã€ãã¬ãŒã¿ãã«ããŒã以äžãå¯èœã«ããŸãïŒ
- ãªã¢ã«ã¿ã€ã ããã·ã¥ããŒãã®æŽæ°ïŒ éèåžå Žãã»ã³ãµãŒãããã¯ãŒã¯ããŸãã¯ãœãŒã·ã£ã«ã¡ãã£ã¢ã®èšåããã®åä¿¡ããŒã¿ãã£ãŒããåŠçããããã·ã¥ããŒããåçã«æŽæ°ããŸãã
- ç¹åŸŽéãšã³ãžãã¢ãªã³ã°ïŒ ããŒã¿ã»ããå šäœãå®äœåããããšãªããããŒã¿ãµã³ãã«ã«å€æãšãã£ã«ã¿ãé©çšããŸãã
IoTãšãšããžã³ã³ãã¥ãŒãã£ã³ã°ïŒãªãœãŒã¹ã«å¶çŽã®ããç°å¢
IoTããã€ã¹ããšããžã²ãŒããŠã§ã€ã®ããã«ãã¡ã¢ãªãšCPUãµã€ã¯ã«ãéåžžã«è²Žéãªç°å¢ã§ã¯ãã€ãã¬ãŒã¿ãã«ããŒã¯ç¹ã«æçã§ãïŒ
- ã»ã³ãµãŒããŒã¿ã®ååŠçïŒ ã¯ã©ãŠãã«éä¿¡ããåã«çã®ã»ã³ãµãŒããŒã¿ããã£ã«ã¿ãªã³ã°ããããã³ã°ãããã³ãªãã¥ãŒã¹ãããããã¯ãŒã¯ãã©ãã£ãã¯ãšåŠçè² è·ãæå°éã«æããŸãã
- ããŒã«ã«åæïŒ 倧éã®ããŒã¿ããããã¡ãªã³ã°ããããšãªããããã€ã¹äžã§è»œéãªåæã¿ã¹ã¯ãå®è¡ããŸãã
ãã¹ããã©ã¯ãã£ã¹ãšèæ ®äºé
ã€ãã¬ãŒã¿ãã«ããŒãæå€§éã«æŽ»çšããããã«ããããã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
ã€ãã¬ãŒã¿ãã«ããŒã䜿çšããã¿ã€ãã³ã°
- å€§èŠæš¡ãªããŒã¿ã»ããïŒ äžéé åã®äœæãæžå¿µãããæ°åãŸãã¯æ°çŸäžã®ã¢ã€ãã ã®ã³ã¬ã¯ã·ã§ã³ãæ±ãå Žåã
- ç¡éãŸãã¯æœåšçã«ç¡éã®ã¹ããªãŒã ïŒ ãããã¯ãŒã¯ãœã±ããããã¡ã€ã«ãªãŒããŒããŸãã¯ããŒã¿ããŒã¹ã«ãŒãœã«ãããç¡å¶éã®æ°ã®ã¢ã€ãã ãçæããå¯èœæ§ã®ããããŒã¿ãåŠçããå Žåã
- ã¡ã¢ãªã«å¶çŽã®ããç°å¢ïŒ ã¯ã©ã€ã¢ã³ããµã€ãã®ã¢ããªã±ãŒã·ã§ã³ãIoTããã€ã¹ããŸãã¯ã¡ã¢ãªäœ¿çšéãéèŠãªãµãŒããŒã¬ã¹é¢æ°ã
- è€éãªé£éæäœïŒ è€æ°ã®
mapãfilterãflatMapæäœãé£éãããåŸæ¥ã®æ¹æ³ã§ã¯è€æ°ã®äžéé åãäœæãããå Žåã
å°èŠæš¡ã§åºå®ãµã€ãºã®é åã®å Žåãããã©ãŒãã³ã¹ã®å·®ã¯ãããããã§ãããåçŽãã®ããã«åŸæ¥ã®é åã¡ãœããã®èŠªãã¿ãããã奜ãŸãããããããŸããã
ããã©ãŒãã³ã¹ãã³ãããŒã¯
åžžã«ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã§ãã³ãããŒã¯ãè¡ã£ãŠãã ãããã€ãã¬ãŒã¿ãã«ããŒã¯äžè¬çã«å€§èŠæš¡ãªããŒã¿ã»ããã§ããã©ãŒãã³ã¹äžã®å©ç¹ãæäŸããŸãããæ£ç¢ºãªå©ç¹ã¯ããŒã¿æ§é ã颿°ã®è€éããããã³JavaScriptãšã³ãžã³ã®æé©åã«ãã£ãŠç°ãªããŸããconsole.time()ãå°çšã®ãã³ãããŒã¯ã©ã€ãã©ãªãªã©ã®ããŒã«ã¯ãããã«ããã¯ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
ãã©ãŠã¶ãšç°å¢ã®ãµããŒãïŒããªãã£ã«ïŒ
ES2023ã®æ©èœãšããŠãã€ãã¬ãŒã¿ãã«ããŒã¯ãã¹ãŠã®å€ãç°å¢ã§å³åº§ã«ãã€ãã£ãã«ãµããŒããããŠãããšã¯éããŸãããç¹ã«ã¬ã¬ã·ãŒãã©ãŠã¶ã®ãµããŒããå¿
èŠãªç°å¢ã§ã®å¹
åºãäºææ§ã®ããã«ãããªãã£ã«ãå¿
èŠã«ãªãå ŽåããããŸããcore-jsã®ãããªã©ã€ãã©ãªã¯ãæ°ããECMAScriptæ©èœã®ããªãã£ã«ãæäŸããäžçäžã®å€æ§ãªãŠãŒã¶ãŒããŒã¹ã§ã³ãŒããäžè²«ããŠå®è¡ãããããšãä¿èšŒããŸãã
èªã¿ããããšããã©ãŒãã³ã¹ã®ãã©ã³ã¹
匷åã§ã¯ãããŸããããã¹ãŠã®å°ããªå埩åŠçãéåºŠã«æé©åããããšã¯ãææ ®æ·±ãé©çšãããªãå Žåãããè€éãªã³ãŒãã«ã€ãªããããšããããŸããå¹çæ§ã®åäžãæ¡çšãæ£åœåãããã©ã³ã¹ãç®æããŠãã ãããã€ãã¬ãŒã¿ãã«ããŒã®å®£èšçãªæ§è³ªã¯äžè¬çã«èªã¿ããããåäžãããŸãããæ ¹åºã«ããé å»¶è©äŸ¡ã¢ãã«ãçè§£ããããšãéµã§ãã
ä»åŸã®å±æïŒJavaScriptããŒã¿åŠçã®æªæ¥
ã€ãã¬ãŒã¿ãã«ããŒã®å°å ¥ã¯ãJavaScriptã«ãããããå¹ççã§ã¹ã±ãŒã©ãã«ãªããŒã¿åŠçã«åããéèŠãªäžæ©ã§ããããã¯ãã¹ããªãŒã ããŒã¹ã®åŠçãšãªãœãŒã¹ã®æé©åãéèŠããããŠã§ããã©ãããã©ãŒã éçºã®åºç¯ãªãã¬ã³ããšäžèŽããŠããŸãã
Web Streams APIãšã®çµ±å
ãããã¯ãŒã¯ãªã¯ãšã¹ãããã¡ã€ã«ã¢ããããŒããªã©ããã®ããŒã¿ã¹ããªãŒã ãåŠçããæšæºçãªæ¹æ³ãæäŸããWeb Streams APIã¯ããã§ã«ã€ãã©ãã«ãšé£æºããŠããŸããã€ãã¬ãŒã¿ãã«ããŒã¯ãWeb StreamsãæµããããŒã¿ã倿ããã³ãã£ã«ã¿ãªã³ã°ããããã®èªç¶ã§åŒ·åãªæ¹æ³ãæäŸãããã©ãŠã¶ããŒã¹ããã³Node.jsã¢ããªã±ãŒã·ã§ã³ããããã¯ãŒã¯ãªãœãŒã¹ãšããåãããããã®ãããã«å ç¢ã§å¹ççãªãã€ãã©ã€ã³ãäœæããŸãã
ãããªãæ©èœåŒ·åã®å¯èœæ§
JavaScriptãšã³ã·ã¹ãã ãé²åãç¶ããã«ã€ããŠãå埩ãããã³ã«ãšãã®ãã«ããŒã«ãããªãæŽç·Žãšè¿œå ãæåŸ ã§ããŸããããã©ãŒãã³ã¹ãã¡ã¢ãªå¹çãããã³éçºè ã®ãšã«ãŽããã¯ã¹ãžã®ç¶ç¶çãªçŠç¹ã¯ãJavaScriptã§ã®ããŒã¿åŠçããã匷åã§ã¢ã¯ã»ã¹ãããããªãããšãæå³ããŸãã
çµè«ïŒäžçäžã®éçºè ãåã¥ãã
JavaScriptã€ãã¬ãŒã¿ãã«ããŒã»ã¹ããªãŒã ãªããã£ãã€ã¶ã¯ãECMAScriptæšæºãžã®åŒ·åãªè¿œå æ©èœã§ãããéçºè ã«ããŒã¿ã¹ããªãŒã ãåŠçããããã®å ç¢ã§å®£èšçããã€éåžžã«å¹ççãªã¡ã«ããºã ãæäŸããŸããé å»¶è©äŸ¡ãæ¡çšããäžéããŒã¿æ§é ãæå°éã«æããããšã«ããããããã®ãã«ããŒã¯ãããããã©ãŒãã³ã¹ãé«ããã¡ã¢ãªæ¶è²»ãå°ãªããä¿å®ã容æãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããåãäžããŠãããŸãã
ããªãã®ãããžã§ã¯ãã®ããã®å®è·µçãªæŽå¯ïŒ
- ããã«ããã¯ã®ç¹å®ïŒ ã³ãŒãããŒã¹ã®äžã§ãç¹ã«ããã©ãŒãã³ã¹ãéèŠãªãã¹ã§ã倧ããªé åãç¹°ãè¿ããã£ã«ã¿ãªã³ã°ããããã³ã°ããŸãã¯å€æãããŠããé åãæ¢ããŸãã
- ã€ãã¬ãŒã¿ã®æ¡çšïŒ å¯èœãªéããäºåã«å®å šãªé åãäœæããã®ã§ã¯ãªããã€ãã©ãã«ãšãžã§ãã¬ãŒã¿ã掻çšããŠããŒã¿ã¹ããªãŒã ãçæããŸãã
- èªä¿¡ãæã£ãŠé£éãããïŒ ã€ãã¬ãŒã¿ãã«ããŒã®
map()ãfilter()ãflatMap()ãtake()ãããã³drop()ãå©çšããŠããªãŒã³ã§å¹ççãªãã€ãã©ã€ã³ãæ§ç¯ããŸãã - éåæã€ãã¬ãŒã¿ãæ€èšããïŒ ãããã¯ãŒã¯ãªã¯ãšã¹ãããã¡ã€ã«èªã¿åããªã©ã®I/OããŠã³ããªæäœã«ã¯ããã³ããããã³ã°ã§ã¡ã¢ãªå¹çã®é«ãããŒã¿åŠçã®ããã«
AsyncIterator.prototypeãæ¢æ±ããŸãã - ææ°æ å ±ãå ¥æããïŒ ECMAScriptã®ææ¡ããã©ãŠã¶ã®äºææ§ã«æ³šæãæããæ°ããæ©èœãã¯ãŒã¯ãããŒã«ã·ãŒã ã¬ã¹ã«çµ±åããŸãã
ã€ãã¬ãŒã¿ãã«ããŒãéçºãã©ã¯ãã£ã¹ã«çµ±åããããšã§ãããªãã¯ããå¹ççãªJavaScriptãæžãã ãã§ãªããäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠããè¯ããããéããããæç¶å¯èœãªããžã¿ã«äœéšã«è²¢ç®ããŠããã®ã§ãã仿¥ããããŒã¿ãã€ãã©ã€ã³ã®æé©åãå§ããã¢ããªã±ãŒã·ã§ã³ã®å¯èœæ§ãæå€§éã«åŒãåºããŸãããã